package com.adk.backend.service;

import com.adk.backend.common.PageResult;
import com.adk.backend.entity.LxCustomerList;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;

/**
 * 客户服务接口
 */
public interface CustomerService extends IService<LxCustomerList> {
    
    /**
     * 分页查询客户列表
     */
    PageResult<LxCustomerList> getCustomerList(Map<String, Object> params);
    
    /**
     * 根据客户代码查询客户
     */
    LxCustomerList getCustomerByCode(String cusCode);
    
    /**
     * 创建客户
     */
    LxCustomerList createCustomer(LxCustomerList customer);
    
    /**
     * 更新客户
     */
    boolean updateCustomer(LxCustomerList customer);
    
    /**
     * 获取所有启用的客户列表（用于下拉选择）
     */
    java.util.List<LxCustomerList> getAllEnabledCustomers();
    
    /**
     * 客户转移
     */
    boolean transferCustomer(Long id, Long newId);
    
    /**
     * 更新客户开发/跟单
     */
    boolean updateCustomerYw(Long id, Long ywId, Integer type, String ywDate);
    
    /**
     * 更新客户账期
     */
    boolean updateCustomerPt(Long id, Integer pt);
    
    /**
     * 更新客户合同
     */
    boolean updateCustomerContract(Long id, java.util.Map<String, Object> params);
    
    /**
     * 获取客户资料（用于客户自助修改）
     * @param customerId 客户ID（从session获取）
     * @param userId 用户ID（如果customerId为空，从用户获取email）
     * @return 客户资料信息（包含附件信息）
     */
    java.util.Map<String, Object> getCustomerProfile(Long customerId, Long userId);
    
    /**
     * 保存客户资料（用于客户自助修改）
     * @param customer 客户信息
     * @param userId 用户ID
     * @param file 上传的文件（身份证/营业执照）
     * @param isNewCustomer 是否是新客户（need_to_update==1时创建新客户）
     * @return 保存结果
     */
    java.util.Map<String, Object> saveCustomerProfile(LxCustomerList customer, Long userId, org.springframework.web.multipart.MultipartFile file, boolean isNewCustomer);
}

